import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.2
import "."
import "./components/"
import "../javascript/Utils.js" as UtilsJS

ListView {
    property string titulo: "Fornecedores"
    property var subTitulo: null
    property bool showMenuButton: true

    property alias items: listModel

    property Rectangle toolBarMenu: Rectangle {
        width: UtilsJS.dp2px(150)
        height: menuItems.height
        color: "#f3f3f3"

        Column {
            id: menuItems
            width: parent.width

            Button {
                text: "Info"
                style: applicationWindow.botoesDrawer
                width: parent.width
                height: UtilsJS.dp2px(48)
                property string icon: ""
                onClicked: {
                    applicationWindow.hideToolBarMenu();
                    applicationWindow.showPath();
                }
            }
        }
    }

    width: parent.width

    visible: true;
    spacing:  UtilsJS.dp2px(2)

    model: ListModel {
        id:listModel
        ListElement {_id:"0"; nome: "SuperBox Brasil"; descricao: "7 Km\n22 Produtos"; status: "NAO_VISITADO"}
        ListElement {_id:"0"; nome: "Extra"; descricao: "15 Km\n23 Produtos"; status: "NAO_VISITADO"}
        ListElement {_id:"0"; nome: "Pão de Açúcar"; descricao: "18 Km\n27 Produtos"; status: "NAO_VISITADO"}
        ListElement {_id:"0"; nome: "Macro"; descricao: "25 Km\n36 Produtos"; status: "NAO_VISITADO"}
        ListElement {_id:"0"; nome: "Bom a Bessa"; descricao: "6 Km\n15 Produtos"; status: "PARCIAL"}
        ListElement {_id:"0"; nome: "Atacadão"; descricao: "21 Km\n32 Produtos"; status: "PARCIAL"}
        ListElement {_id:"0"; nome: "Híper"; descricao: "10 Km\n42 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
        ListElement {_id:"0"; nome: "Carrefour"; descricao: "11 Km\n48 Produtos"; status: "VISITADO"}
    }

    delegate: Button {
        width: parent.width

        // foi necessário colocar os valores vindos dos ListElements aqui
        // para poderem ser corretamente utilizados no ButtonStyle
        text: nome

        property string obs: descricao
        property string situacao: status

        onClicked: {
            applicationWindow.exibeProdutos(_id,nome);
        }

        style: ButtonStyle {
            padding.top: UtilsJS.dp2px(8)
            padding.right:  UtilsJS.dp2px(8)
            padding.bottom:  UtilsJS.dp2px(8)
            padding.left:  UtilsJS.dp2px(8)

            label: Item {
                implicitWidth: row.implicitWidth
                implicitHeight: row.implicitHeight
                Row {
                    id: row
                    anchors.verticalCenter: parent.verticalCenter
                    spacing: UtilsJS.dp2px(8)
                    Rectangle {
                        color: {
                            if (control.situacao == "VISITADO") {
                                return "#99cc00";
                            } else if (control.situacao == "PARCIAL") {
                                return "#ffbb33";
                            } else {  // "NAO_VISITADO"
                                return "#ff4444";
                            }
                        }
                        height: column.height
                        width: height
                        Text {
                            renderType: Text.NativeRendering
                            text: {
                                if (control.situacao == "VISITADO") {
                                    return "";
                                } else if (control.situacao == "PARCIAL") {
                                    return "";
                                } else {  // "NAO_VISITADO"
                                    return "";
                                }
                            }
                            color: "#ffffff"
                            font.family: webFont.name
                            font.pixelSize: UtilsJS.dp2px(32)
                            anchors.centerIn: parent
                        }
                    }

                    Column {
                        id: column
                        Text {
                            renderType: Text.NativeRendering
                            text: control.text
                            color: "#555558"
                            font.pixelSize: UtilsJS.dp2px(14)
                            font.bold: true
                        }
                        Text {
                            renderType: Text.NativeRendering
                            text: control.obs
                            color: "#a7a8ab"
                            wrapMode: Text.Wrap
                            font.pixelSize: UtilsJS.dp2px(14)
                        }
                    }
                }
            }

            background: Rectangle {
                border.width: UtilsJS.dp2px(2)
                border.color: control.pressed ? "#33b5e5" : "#ffffff"
                color: control.pressed ? "#ade1f4" : "#ffffff"
            }
        }
    }

    function doUpdate() {
        items.clear();

        var pos = applicationWindow.currentPos.split(",");
        var fornecedores = fornecedoresController.loadDadosFornecedores();

        var i;
        for(i=0; i<fornecedores.length; i++) {
            var distance = UtilsJS.calcDistance(pos[0],pos[1],fornecedores[i]["lat"],fornecedores[i]["lon"]);

            var descricao = distance+"\n"+fornecedores[i]["qtdProdutos"]+" Produtos";
            items.append({"_id": fornecedores[i]["id"], "nome": fornecedores[i]["nome"],
                                        "descricao":descricao, "status":fornecedores[i]["status"]});
        }
    }

    function back() {
        return true;
    }

}

